# # -*- coding: utf-8 -*-
# # @Author  : haomh
# # @Time    : 2025/11/19 17:04
# # @Function:
#
# class SweetPotato():
#     def __init__(self):
#         self.cook_time = 0
#         self.cook_static = '生的'
#         self.condiments = []
#
#     def cook(self, time):
#         self.cook_time += time
#         if 0 <= self.cook_time < 3:
#             self.cook_static = '生的'
#         elif 3 <= self.cook_time < 5:
#             self.cook_static = '半生不熟'
#         elif 5 <= self.cook_time < 8:
#             self.cook_static ='熟了'
#         elif 8 <= self.cook_time < 10:
#             self.cook_static='烤糊了'
#
#     def __str__(self):
#         return f'这个地⽠烤了了{self.cook_time}分钟, 状态是{self.cook_static},添加的调料有{self.condiments}'
#
#     def add_condiments(self, condiment):
#         # 添加调料
#         self.condiments.append(condiment)
#
# p1 = SweetPotato()
# p1.cook(3)
# p1.add_condiments('甘梅粉')


class Gun:
    """枪类：封装枪的型号、子弹数量，以及装填、发射方法"""

    def __init__(self, model):
        # 枪的型号（如AK47、M4A1）
        self.model = model
        # 枪的当前子弹数量，初始为0
        self.bullet_count = 0

    def add_bullet(self, count):
        """装填子弹：增加枪的子弹数量"""
        if count <= 0:
            print(f"装填失败！请输入大于0的子弹数量。")
            return
        self.bullet_count += count
        print(f"成功为【{self.model}】装填{count}发子弹，当前子弹总数：{self.bullet_count}")

    def shoot(self):
        """发射子弹：扣动扳机发射一颗子弹，无子弹时提示"""
        if self.bullet_count <= 0:
            print(f"【{self.model}】无子弹！无法发射，请先装填子弹。")
            return
        # 发射一颗子弹，数量减1
        self.bullet_count -= 1
        print(f"【{self.model}】发射子弹！剩余子弹：{self.bullet_count}")


class Soldier:
    """士兵类：封装姓名、持有枪，以及开火、装填子弹的方法"""

    def __init__(self, name):
        # 士兵姓名
        self.name = name
        # 士兵持有的枪，初始为None（未持枪）
        self.gun = None

    def load_bullet(self, count):
        """为持有的枪装填子弹，无枪时提示"""
        if self.gun is None:
            print(f"【{self.name}】未持有枪支，无法装填子弹！")
            return
        # 调用枪的装填方法
        self.gun.add_bullet(count)

    def fire(self):
        """士兵开火：扣动扳机，调用枪的发射方法，无枪时提示"""
        if self.gun is None:
            print(f"【{self.name}】未持有枪支，无法开火！")
            return
        print(f"【{self.name}】扣动扳机——")
        # 调用枪的发射方法
        self.gun.shoot()


# -------------- 测试代码 --------------
if __name__ == "__main__":
    # 1. 创建AK47枪对象
    ak47 = Gun("AK47")

    # 2. 创建士兵瑞恩
    ryan = Soldier("瑞恩")

    # 3. 瑞恩持有AK47
    ryan.gun = ak47

    # 4. 测试：瑞恩先开火（无子弹）
    ryan.fire()

    # 5. 测试：瑞恩装填子弹
    ryan.load_bullet(30)

    # 6. 测试：瑞恩多次开火
    ryan.fire()
    ryan.fire()
    ryan.fire()

    # 7. 测试：装填负数子弹（异常情况）
    ryan.load_bullet(-5)
